package com.tuton.javanet.chapter01;

import java.io.*;
import java.net.*;

public class EchoClient {
	
	private String host = "localhost";
	private int port = 8000;
	private Socket socket;
	
	public EchoClient()throws IOException{
		this.socket = new Socket(host,port);
	}
	
	public static void main(String[] args) throws IOException {
		new EchoClient().talk();
	}

	private PrintWriter getWriter(Socket socket)throws IOException{
		OutputStream socketOut = socket.getOutputStream();
		//第二个参数表示自动flush
		return new PrintWriter(socketOut,true);
	}
	
	private BufferedReader getReader(Socket socket)throws IOException{
		InputStream socketIn = socket.getInputStream();
		return new BufferedReader(new InputStreamReader(socketIn));
	}
	
	
	private void talk() throws IOException {
		try {
			PrintWriter pw = getWriter(socket);
			BufferedReader br = getReader(socket);
			BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
			
			String msg = null;
		    while((msg = localReader.readLine()) != null) {
		    	
		    		pw.println(msg);
		    		System.out.println("Get echo msg form server..." + "\n" + 
		    				br.readLine());
		    		if("bye".equalsIgnoreCase(msg)){
		    			System.out.println("The client was stoped!");
		    		}
		    }
		} catch(IOException ex) {
    		ex.printStackTrace();
    	} finally {
    		try{
    			if(socket != null) {
    				socket.close();
    			}
    		} catch(IOException ex) {
    			ex.printStackTrace();
    		}
    	}
	}
	
}
